package org.zxyj.manage.service;

import java.util.List;
import java.util.Map;

import org.zxyj.core.entity.Pagination;
import org.zxyj.manage.entity.CoursePaper;
import org.zxyj.manage.entity.CoursePaperCrop;
import org.zxyj.manage.entity.CoursePaperDetail;
import org.zxyj.manage.entity.Examinee;

public interface ICoursePaperService {
	
	/**
	 * 删除考号重复的答卷
	    * @Title: deleteKsbhExists
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deleteKsbhExists(Map<String, Object> criteria);
	
	/**
	 * 查询答卷明细分页查询
	    * @Title: findCoursePaperDetailPage
	    * @param @param criteria
	    * @param @param pagination
	    * @param @return    参数
	    * @return Pagination    返回类型
	    * @throws
	 */
	Pagination findCoursePaperDetailPage(Map<String, Object> criteria, Pagination pagination);
	
	/**
	 * 查询答卷明细
	    * @Title: findCoursePaperDetailList
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<CoursePaperDetail>    返回类型
	    * @throws
	 */
	List<CoursePaperDetail> findCoursePaperDetailList(Map<String, Object> criteria);
	
	/**
	 * 查询具体答卷
	    * @Title: findCoursePaperDetail
	    * @param @param criteria
	    * @param @return    参数
	    * @return Map<String, Object>    返回类型
	    * @throws
	 */
	Map<String, Object> findCoursePaperDetail(Map<String, Object> criteria);
	CoursePaperDetail findCoursePaperDetailEntity(Map<String, Object> criteria);
	
	/**
	 * 查询科目答卷下存在重复的考生数据 
	    * @Title: queryRepeatStudentForPaper
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String,Object>> queryRepeatStudentForPaper(Map<String, Object> criteria);
	
	/**
	 * 插入科目答卷裁剪记录
	    * @Title: insertCoursePaperCrop
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertCoursePaperCrop(CoursePaperCrop entity);

	/**
	 * 更新答卷明细状态
	    * @Title: updatePaperDetailStatus
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updatePaperDetailStatus(CoursePaperDetail entity);
	
	/**
	 * 查询所有考生信息
	    * @Title: queryExamineeList
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Examinee>    返回类型
	    * @throws
	 */
	List<Examinee> queryExamineeList(Map<String, Object> criteria);
	
	/**
	 * 更新科目答卷校验结果
	    * @Title: updatePaperCheckResult
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updatePaperCheckResult(Map<String, Object> criteria);
	
	/**
	 * 清空答卷相关数据
	    * @Title: clearPaper
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void clearPaper(Map<String, Object> criteria);
	
	/**
	 * 删除科目问卷
	    * @Title: deleteCoursePaper
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deleteCoursePaper(Map<String, Object> criteria);
	
	/**
	 * 新增科目问卷ZIP
	    * @Title: insertCoursePaper
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertCoursePaper(CoursePaper entity);
	
	/**
	 * 查找指定文件夹下所有文件
	    * @Title: getPaperFile
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void getPaperFile(Map<String, Object> criteria);
	
	/**
	 * 删除已有记录之外的重复数据
	    * @Title: deleteCoursePaperForRepeat
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
    void deleteCoursePaperForRepeat(Map<String, Object> criteria);
    
    /**
     * 查询未上传的考生答卷分页列表
        * @Title: findCoursePaperSurplusStudentPage
        * @param @param criteria
        * @param @param pagination
        * @param @return    参数
        * @return Pagination    返回类型
        * @throws
     */
    Pagination findCoursePaperSurplusStudentPage(Map<String, Object> criteria, Pagination pagination);
    
    /**
     * 查询未上传的考生班级
        * @Title: querySurplusStudentClass
        * @param @param criteria
        * @param @return    参数
        * @return List<Map<String,Object>>    返回类型
        * @throws
     */
    List<Map<String, Object>> querySurplusStudentClass(Map<String, Object> criteria);
    
    /**
     * 查询课程答卷已裁剪数据
        * @Title: findCoursePaperCropList
        * @param @param criteria
        * @param @return    参数
        * @return List<CoursePaperCrop>    返回类型
        * @throws
     */
    List<CoursePaperCrop> findCoursePaperCropList(Map<String, Object> criteria);
    
    /**
     * 查询裁剪图片实体
        * @Title: findCoursePaperCropEntity
        * @param @param criteria
        * @param @return    参数
        * @return CoursePaperCrop    返回类型
        * @throws
     */
    CoursePaperCrop findCoursePaperCropEntity(Map<String, Object> criteria);
}
